High performance ethernet networking utilizing existing fibre channel fabric hba technology

ABSTRACT

This is directed to providing Fibre Channel over Ethernet communication. For example a Fibre Channel over Ethernet (FCoE) enabled device (such as a computer) may include a Fibre Channel over Ethernet Adapter (FCoEA). The FCoEA may include an HBA module. The HBA module may be configured to communicate over the Fibre Channel protocol. The FCoE enabled device may process and encapsulate the HBA module&#39;s communication in order to send them over an Ethernet network instead. The FCoE enabled device may process communications directed to various Fibre Channel fabric services by utilizing existing Ethernet services, such as an iSNS server. Thus, the FCoE enabled device can emulate a Fibre Channel network for the HBA module using the Ethernet network and one or more Existing Ethernet services/servers.

FIELD OF THE INVENTION

This invention generally relates to network devices and morespecifically to Fibre Channel over Ethernet controllers and supportdevices.

BACKGROUND OF THE INVENTION

Fibre Channel is a well known standard for network communications. It isgenerally used for applications where high data transmission rates andhigh reliability are necessary, such as storage networks. Fibre channelsystems are usually based on one of three topologies—point to point,arbitrated loop and switched fabric. For each topology there existstandard initialization and messaging procedures which various devicesconnected to the network can use to announce their presence to otherdevices, determine what other devices are present in the network, anddetermine when a device enters or exits the network. In the point topoint and arbitrated loop topologies, these procedures may be performedby the devices themselves. In the switched fabric topology, theseprocedures may be at least partially performed by the networkfabric—i.e., various switches or servers that are considered to be partof the network itself and not devices communicating with the network.

Ethernet is a network communication standard traditionally used forapplications for which the data transmission rate and reliabilityrequirements are not as high as they are for Fibre Channel applications.For example, Ethernet is often used as a base layer for TCP/IP networks,which are in turn used for Internet networking. However, recentdevelopments have brought about Ethernet technology featuring datatransmission rates and reliability similar to those of Fibre Channel. Anexample is the converged enhanced Ethernet (CEE) currently beingdeveloped at the IEEE standards body.

Since Ethernet is very prevalent, there have been suggestions to moveapplications that traditionally rely on Fibre Channel (such as, forexample, storage networking) to CEE or other types of Ethernet networks.This would save resources as it would remove the necessity of buildingand supporting two separate networks in an organization (i.e., a FibreChannel network for storage and an Ethernet network for Internet access,computer to computer communications, etc).

However, changing existing Fibre Channel applications to Ethernet mayrequire that existing networking devices such as, for example, host busadapters (HBAs) be completely redesigned to use Ethernet or use othersuboptimal protocols such as Internet SCSI (iSCSI). Since existing FibreChannel HBAs incorporate many years worth of innovation, it may not becost efficient to completely redesign these devices.

One suggested scheme of switching from Fibre Channel to Ethernet withoutcompletely redesigning existing HBAs is to use gateways. Morespecifically, Fibre Channel over Ethernet (FCoE) gateways can be used toconnect a Fibre Channel component to an Ethernet network. An FCoEgateway may be a stand alone device which is connected to the FibreChannel component through a Fibre Channel link. The gateway may also beconnected to an Ethernet network and may thus combine an existing FibreChannel based HBA with an Ethernet network. However, this approach isnot considered optimal as the requirement of using additional standalonedevices (i.e., FCoE gateways) would add significant costs and complexityto the resulting networks. Furthermore, this would not completelyeliminate the necessity for Fibre Channel infrastructure, because aFibre Channel connection between the gateway and the HBA would still benecessary.

Therefore, there is a need for creating an end to end CEE (or otherEthernet) high speed network that utilizes the technology of existingFibre Channel HBAs to a great extent.

SUMMARY OF THE INVENTION

This is directed to providing Fibre Channel over Ethernet communication.For example a Fibre Channel over Ethernet (FCoE) enabled device (such asa computer) may include a Fibre Channel over Ethernet Adapter (FCoEA).The FCoEA may include an HBA module. The HBA module may be configured tocommunicate over the Fibre Channel protocol. The FCoE enabled device mayprocess and encapsulate the HBA module's communication in order to sendthem over an Ethernet network instead. The FCoE enabled device mayprocess communications directed to various Fibre Channel fabric servicesby utilizing existing Ethernet services, such as an iSNS server. Thus,the FCoE enabled device can emulate a Fibre Channel network for the HBAmodule using the Ethernet network and one or more existing Ethernetservices/servers.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of an exemplary Fibre Channel Fabric network.

FIG. 2 is a diagram of an exemplary Ethernet network according toembodiments of the invention.

FIG. 3A is a diagram of an exemplary FCoEA (Fibre Channel over EthernetAdapter) according to embodiments of the invention.

FIG. 3B is a diagram of another exemplary FCoEA according to embodimentsof the invention.

FIG. 3C is a diagram of yet another exemplary FCoEA according toembodiments of the invention.

FIG. 4 is a diagram of an exemplary FCoEA enabled device according toembodiments of the invention.

FIG. 5 is a flowchart of an exemplary method of emulating a FibreChannel network according to embodiments of the present invention.

FIG. 6 is a diagram showing the operation of an exemplary FCoE (Ethernetencapsulation of a Fibre Channel frame) module during initializationaccording to embodiments of the invention.

FIG. 7 is a diagram showing the operation of an exemplary FCoE moduleduring State Change Registration and NPIV (N_Port ID Virtualization)initialization according to embodiments of the invention.

FIG. 8 is a diagram showing the operation of an exemplary FCoE moduleduring device discovery according to embodiments of the invention.

FIG. 9 is a diagram showing the operation of an exemplary FCoE moduleduring device discovery according to embodiments of the invention.

FIG. 10 is a diagram showing the operation of an exemplary FCoE moduleduring receipt of a state change notification message according toembodiments of the invention.

FIG. 11 is a diagram showing the operation of an exemplary FCoE moduleduring Port Login according to embodiments of the invention.

FIGS. 12A and 12B are diagrams of showing embodiments of the presentinvention being utilized in multiple heterogeneous networks.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

In the following description of preferred embodiments, reference is madeto the accompanying drawings which form a part hereof, and in which itis shown by way of illustration specific embodiments in which theinvention may be practiced. It is to be understood that otherembodiments may be utilized and structural changes may be made withoutdeparting from the scope of the preferred embodiments of the presentinvention.

Although embodiments of the present invention are described herein interms of HBA adapters for storage area networks, it should be understoodthat the present invention is not limited to such circuits, but isgenerally applicable to any devices that connect through Ethernet (orother similar types of networks), while utilizing circuits that havebeen originally designed for Fibre Channel (or other similar types ofnetworks).

FIG. 1 is a diagram of an exemplary Fibre Channel network of the fabrictopology. Several devices 101, 102, 103 and 104 can be connected to aFibre Channel network 100. The exemplary network of FIG. 1 may be astorage area network but other Fibre Channel fabric networks may havesimilar configurations. Devices 101-103 can be computers and device 104can be a storage device (such as a RAID array) serving the computers.Fibre Channel Host Bus Adapters (HBAs) 105-108 can be used by thevarious devices to connect to the network. HBAs are networking deviceswhich are able to perform some lower level network communicationsprocessing without burdening a main processor of the device the host busadapter is a part of. Therefore, host bus adapters are often used withhigh throughput networks, such as Fibre Channel networks where thepotential burden on the main processor if it had to handle the lowerlevel network communications processing would be great.

In order to operate together in a fabric network, devices 101-104 mustbe aware of at least the other storage device in the network. Thedevices may obtain Fibre Channel addresses and find the Fibre Channeladdresses of other devices through the fabric (i.e., by communicatingwith various switches and the like within Fibre Channel network 100).Devices may also need to obtain and/or share other, higher levelinformation about each other. For example the devices may need to sharethe type of each device, (e.g., whether it is a server or a storagedevice), the number, types and/or names of various elements within adevice (e.g. disks), and other information that may depend on aparticular application of the Fibre Channel network. For that purpose,each of devices 101-104 may register with a name server 109 and send itvarious data that describes itself. The name server may keep track ofthat data. Thus, each device may receive from the name server thevarious data and attributes describing other devices that are connectedto the network.

Furthermore, the various devices may send and receive messages whichrelate to changes of the network. For example, if a device deactivates,or otherwise drops out of the network, or if a new device enters thenetwork, the fabric may send out messages alerting the connected devicesof the status change. These messages are referred to as registered statechange notification or RSCN messages, and are provided according to apredefined RSCN protocol.

The name server 109 may be provided as a discrete server, or it can beimplemented by one or more switches of the Fibre Channel network 100.

FIG. 2 is a diagram of an Ethernet network. There, devices 201-204(which may be similar to devices 101-104 of FIG. 1) can be connected toeach other through the Ethernet network 200. Ethernet refers to a lowlevel networking infrastructure, and may support other higher levelnetworking protocols, such as, most notably, IP and TCP/IP. Thus,Ethernet network 200 can also serve as an IP and/or TCP/IP network.Furthermore, Ethernet network 200 can be a modern enhanced type of anEthernet network. For example, Ethernet network 200 can be an Ethernetnetwork enhanced for higher throughput, such as a 10 Gigabit Ethernetnetwork. Furthermore, network 200 can be an Ethernet network enhancedfor higher reliability and higher throughput, such as various existingand proposed networks supporting lossless Ethernet enhancements.

As discussed above, it may be desirable to use Ethernet network 200instead of the Fibre Channel network 100 for the storage area networkapplication. Furthermore, it may be desirable to move othertraditionally Fibre Channel based applications to the Ethernet networkas well. When more and more applications are moved to a single network,the costs associated with that network will decrease, because of thecommonality of components and the ability to share the same networkinfrastructure among different applications. Thus, for example, Internetaccess, Storage access, and telephony for an enterprise can all beperformed over a single Ethernet network 200.

Devices 201-204 can utilize FCoEAs (Fibre Channel over EthernetAdapters) 205-208 to connect to Ethernet 200. An FCoEA can provide alossless Ethernet interface to a Fibre Channel (FC) HBA (Host BusAdapter). In other words, it can perform the same high throughputnetworking communication processing functions required of a FC HBA foran Ethernet network (as contrasted from a FC HBA which is usuallyintended to operate through a Fibre Channel network). FCoEAs may be usedto connect devices in an Ethernet based storage area network (SAN) orany other application which has been traditionally based on FibreChannel networking but is being modified for Ethernet. FCoEAs may beconfigured to operate with various types of advanced Ethernet networks,such as, for example, CEE (Converged Enhanced Ethernet) losslessnetworks.

FIG. 3A is a diagram of an FCoEA 300 according to embodiments of theinvention. FCoEA 300 may be one of FCoEAs 205-208. FCoEA 300 may includeHBA module 301 and FCoE (Ethernet encapsulation of Fibre Channel) module302. The HBA module can be the same as a respective module of anexisting Fibre Channel HBA (such as, e.g., one of HBAs 105-108 of FIG.1). However, the HBA module may exclude: the Fibre channel MAC layerfunctionality of existing Fibre Channel HBAs, as FCoEA 300 may utilizethe Ethernet MAC layer instead and may include the correspondingfunctionality instead of the Fibre Channel MAC layer functionality.

Thus, the HBA module may have a similar functionality to that of standalone HBA, such as any one of HBAs 105-108 of FIG. 1. Specifically, theHBA module may be configured to process incoming and outgoing networkcommunications between a server and a Fibre Channel network. However, inthe present case, there is no Fibre Channel network connected to the HBAmodule 301. Instead, that module is ultimately connected to an Ethernetnetwork. Therefore, FCoE module 302 (also referred to as Ethernetencapsulation of Fibre Channel module) can be used to provide a virtualFibre Channel network to the HBA module while utilizing the Ethernetbased network 200. Consequently the HBA module can operate as if it wereactually connected to a Fibre Channel network. The goal of thisconfiguration is to utilize existing Fibre Channel based HBA technologyin the Ethernet based FCoEAs. Thus, according to some embodiments, byensuring that significant part of the network processing is performed byexisting HBA technology, the development costs of an FCoEA can bereduced.

The FCoE module can perform the above discussed functionalities byutilizing elements 303, 304 and 305. These are discussed in more detailbelow.

The HBA and FCoE modules can be composed of hardware, software or acombination of both. FIG. 4 is a diagram of an exemplary host computeror computing device 410 (host) that is equipped with an FCoEA 300. TheFCoEA 300 may include an integrated circuit (IC) 400 which may includean embedded processor such as the ARM™ processor 401 and additionallogic 402. The FCoEA may also include memory 403 which may includeinstructions executable at the ARM processor, Fibre Channel connectioncontext, statistics, and other types of information. Some of theadditional logic and some of the instructions executable at the ARMprocessor may be part of the HBA module while other portions of theadditional logic and other instructions executable at the ARM processormay be part of the FCoE module.

The host 410 may include the FCoEA 300 as well as a CPU (411) and amemory (412). The CPU may execute instructions stored in the memory.Thus, the CPU can execute, for example, an operating system (OS) 414stored in the memory as well as other software 415 stored therein.

In order to correctly virtualize or map the Fibre Channel network on theEthernet network, the FCoE module may need to:

(1) Encapsulate outgoing Fibre Channel packets within Ethernet framesfor transport over the Ethernet network and extract Fibre Channelpackets from incoming Ethernet frames.

(2) Emulate the addressing, naming, messaging and other services of aFibre Channel network of the fabric topology (e.g., by emulating theexistence of a name server and supporting Register State ChangeNotification (RSCN) messaging, N_Port ID acquisition, inter fabricrouting (IFR), virtual Fabrics, etc.)

(3) Add Ethernet specific addresses of destination devices to theEthernet frames that encapsulate the outgoing Fibre Channel packets.

Referring to FIG. 3A, step (1) can be performed by FCoE encapsulationelement 303 of the FCoE module 302, step (2) can be performed by fabricservices emulation element 304 and step (3) by address translationelement 305. These elements need not be mutually exclusive and cancomprise common software and/or hardware. Alternatively, step 2 can beperformed anywhere else within the host device including by softwarestored in the host's main memory and executed at the host's CPU. Theexamples discussed herein that show this step as being executed in theFCoE module are merely one possible implementation.

A person of skill in the art would recognize that repackaging data in adifferent format (i.e., executing part 1 above) may be done by“wrapping” Fibre Channel frames into Ethernet frames or, in other words,tunneling or encapsulating Fibre Channel frames over Ethernet. However,part 2 may prove problematic because it requires a Fibre Channelspecific name server (such as server 109 of FIG. 1) as well as a FibreChannel fabric and such elements are not present in Ethernet networks.Designing an Ethernet specific emulator of a Fibre Channel fabric mayprove to be a difficult and costly endeavor.

Therefore, embodiments of the present invention utilize two types ofservers that already exist for Ethernet networks in order to emulate aFibre Channel name server. These are a Dynamic Host ConfigurationProtocol (DHCP) server (210 of FIG. 2) and an Internet Storage NameService (iSNS) server (211 of FIG. 2).

An iSNS server is an IP (Internet Protocol) network based server whichis intended to provide services similar to those of a name server andother Fabric Services in a Fibre Channel network (it should be notedthat most Ethernet networks transport IP frames and are also called IPnetworks). However, the various commands and data formats associatedwith an iSNS server are different than those for a Fibre Channel nameserver. Furthermore, there isn't always a one to one correspondencebetween the commands of an iSNS server and those of a Fibre Channel nameserver. A DHCP server is a server used for assigning IP addresses todevices in an IP network (such as Ethernet network 200). A DHCP servermay be used to provide an IP address of a name server on the network(such as the above discussed iSNS server). It may also be used to assignIP addresses to various devices.

FIG. 5 is a flowchart of a method of simulating the naming and messagingservices of a Fibre Channel network according to embodiments of thepresent invention. The steps of FIG. 5 can be executed by software orhardware within the FCoEA, as well as by software or hardware at thecomputer or device which houses the FCoEA. At step 500, the FCoE (FibreChannel over Ethernet) enabled end device (either the FCoEA or asoftware driver in the attached FCoEA device) accesses the DHCP server210 in order to find the address of the iSNS server. At step 502, theFCoE enabled end device translates communications between the HBA moduleand the iSNS server. As noted above, the FCoE enabled end deviceemulates a Fibre Channel name server and other Fabric Services.Therefore, it must translate communications in such a manner so that itappears to the HBA that the HBA is communicating with a Fibre Channelname server or other Fabric Service. Since, as noted above, there maynot be a one to one relationship between commands and data associatedwith the iSNS server and those associated with a Fibre Channel nameserver, step 502 may be performed by a state machine.

Furthermore, as part of step 502, the FCoE enabled end device may needto translate between Ethernet addresses and Fibre Channel addresses. TheiSNS server may provide the addresses of various elements on the network(such as devices 201-204) in an Ethernet, IP, or Fibre Channel format.The FCoE enabled end device may need one or more Fibre Channel addresseswhich can be used by the HBA module. Thus, the FCoE enabled end devicemay generate Fibre Channel addresses using a seed value provided by theiSNS server and associate them with real Ethernet addresses.Accordingly, in step 504, the FCoE enabled end device keeps track ofassociations of real Ethernet addresses and Fibre Channel addresses.This may be accomplished by storing pairs of associated Ethernet andFibre Channel addresses and/or by using predefined formulae forobtaining a Fibre Channel address from an Ethernet address and anEthernet address from a Fibre Channel address. Furthermore, the iSNSserver may also store Fibre Channel addresses of various devices. Whilethe iSNS server is not traditionally intended to provide Fibre Channeladdresses, it allows for storage of arbitrary attributes that may bedefined by the client. These may be the Fibre Channel addresses.

In step 506, the FCoE enabled end device translates between FibreChannel and Ethernet addresses in ordinary (i.e., not name serverrelated) communications. Thus, the HBA module may send and/or receivedata to and from other devices on the network based on Fibre Channeladdresses.

Referring back to FIG. 3A, an Ethernet NIC module 306 may be connectedwith the FCoE module in order to perform standard lower level Ethernetprocessing. If an advanced type of Ethernet network is being used (suchas, for example, the above noted CEE) the Ethernet NIC may be modifiedto operate over that network. For example, for a network that featureslossless transmission, the Ethernet NIC may include a lossless EthernetMAC processing element 307, as shown.

The HBA module may be connected to the host 410. Existing Fibre ChannelHost drivers 308 may communicate with the HBA module in order tofacilitate fibre channel communications for application software runningat the HBA module. The host drivers can be executed at the host's CPU.

Some functionality of the FCoEA, especially that of its FCoE module, canbe executed by the host CPU and not by the FCoEA itself. For example,the CPU can communicate with the FCoEA in order to execute certainoperations associated with emulating a Fibre Channel network and sendthe results back to the FCoEA. The CPU may perform these FCoEA relatedoperations when executing operating system 414 or other software 415(e.g., a driver). Furthermore, the CPU can execute the FCoEA relatedoperations as part of executing hypervisor software (not shown).

Accordingly, FIG. 3B shows another example of an FCoEA that provides forhost side execution of the FCoE functionality. FIG. 3B is similar toFIG. 3A, but for the fact that an FCoE functionality element 309 of thehost 410 performs some of the functions performed by the FCoE module 302of FIG. 3A. More specifically, the FCoE functionality 309 of the hostperforms fabric services emulation and address translation, while theFCoE module still performs FCoE encapsulation. Therefore, the FCoEfunctionality of the server may include fabric services emulation andaddress translation elements 304 and 305. The FCoE functionality elementcan be software running at the host's processor 411. The FCoEfunctionality may communicate with the FCoEA through Fibre Channeldrivers 311. In this case, the Fibre Channel drivers may not be theexisting drivers 308, as they may require additional functionality inorder to facilitate communications between the FCoE functionality 309and the FCoEA 300. In some embodiments, the FCoEA functionality mayitself be considered as part of a driver for the FCoEA 300.

FIG. 3C shows another exemplary FCoEA in which additional functionalityis moved to the host. HBA Module 301 of the FCoEA is replaced by HBAfunctionality 310. Similarly, the FCoE module is entirely replaced byFCoE functionality 309. The FCoE functionality 309 and the HBAfunctionality 310 may be implemented through software at the host. TheFCoEA retains the Ethernet NIC which includes the lossless Ethernet MAC.Thus, in this embodiment the FCoEA only performs lower layer Ethernetprocessing, while the host performs all other processing.

The above discussion refers to an FCoE functionality and an FCoE moduleas well as an HBA functionality and an HBA module in order to note theplacement of these elements in the host (FCoE and HBA functionality) orin the FCoEA (FCoEA and HBA modules). However, in general the FCoE andHBA functionalities at the host may also be referred to as FCoE or HBAmodules, respectively. When the functionality of a certain element issplit between the host and the FCoEA (as is the case in FIG. 3B), thenboth the host and FCoEA portions together may be referred to as amodule. Thus, in FIG. 3B, host based FCoE functionality 309 and adapterbased FCoE module 302 may together be referred to as an FCoE module.

FIG. 6 is a diagram showing the operation of an exemplary FCoE enabledend device in more detail. More specifically, FIG. 6 shows a sequence orladder diagram of a FCoE enabled end device during, the process ofinitialization and registration for a name service. The FCoE enabled enddevice of FIG. 6 may include 4 elements: a service mapper 601, an iSNSclient 602, a DHCP client 603 and an IP Stack and/or CEE (ConvergedEnhanced Ethernet) interface 604. The diagram shows how these elementsoperate in sequence and over time. The ladder or sequence diagramillustrates elements that are located between the Ethernet Network andthe end device high level elements such as the operating system. Thenetwork can be an Ethernet network (such as network 200 of FIG. 2). Morespecifically, the network can be a CEE network. However, the network canencompass other types of IP networks. Time progresses vertically fromtop to bottom.

The Service Mapper 601 is used to translate communications and data fromthe Fibre Channel format used by the HBA module to the format used bythe iSNS module and back. Commands in angle brackets (such as, forexample “<DHCP Discover>”) signify commands formatted for the Ethernetnetwork 200, while commands without brackets (such as, for example,FLOGI) signify commands formatted for a Fibre Channel network. The iSNSclient is used to communicate with the iSNS server. The DHCP client isused to communicate with the DHCP server. The IP stack 604 is used toformat outgoing communications for transmission over the network 200,and to process communications incoming from the network (i.e., removethe network specific formatting from incoming communications).Accordingly, one of the functions of the IP stack/CEE interface can beto split outgoing communications into Ethernet frames and composeincoming communications from incoming Ethernet frames.

Elements 601-604 can be implemented in hardware, software or both. Anyor all of the elements 601-604 can also be located on the end device.Combined, these elements are used to emulate an Ethernet network for theHBA module as discussed above.

Initially (or upon startup or network connection) the HBA module is not“connected” to the virtual Fibre Channel network. Accordingly, during aninitialization period, the FCoE enabled end device performs Ethernetnetwork related initialization, while the HBA module is led to believethat it is not yet placed in an operating Fibre Channel network.Usually, the FCoE enabled end device needs to perform initializationwith respect to the Ethernet network before it is able to simulate theinitialization of the Fibre Channel network.

During period 605, the DHCP client 603 of the FCoE enabled end devicecommunicates with the DHCP server through the IP stack 604 in order to:(i) discover the IP address of the current device (i.e., the device theDHCP client is part of) and (ii) discover the IP address of the iSNSserver. This may be performed according to known DHCP protocols.

At step 606, the iSNS client registers the current device with the iSNSserver by sending a <DevAttrReg> command to the iSNS server. The iSNSclient also sends a set of attributes 607 for registration with the iSNSserver. The iSNS server returns a <DevAttrRegRsp> message 608 toacknowledge that registration has been performed. Once thatacknowledgement is received, the iSNS client sends a Link Init command609 to the HBA module. The link init command “wakes up” the HBA module.Or, in other words, it indicates to the HBA module that it is connectedto a Fibre Channel network. The HBA module is not actually connected toa Fibre Channel network, but at this point the FCoE enabled end deviceis ready to simulate a virtual Fibre Channel network of the fabrictopology for the HBA module.

When initialized, the HBA module attempts to login into a Fibre ChannelF_Port Controller by sending an FLOGI command 610. The Service Mappertranslates that initial FLOGI command into a <RqstDomId> command. The<RqstDomId> command is an iSNS command which requests an iSNS specificidentification (Domain ID) for the current device. This identificationmay be used as part of one or more Fibre Channel addresses used toidentify the current device for all other devices connected to the iSNSserver. The iSNS client forwards the <RqstDomId> command to the iSNSserver along with attributes 612.

When the iSNS server receives command 611, it assigns a domain ID to thecurrent device and responds by sending a <RqstDomIdRsp> message 613back. Message 613 includes the assigned domain ID for the current device(as noted in the Figure, the domain ID is attached as tag 130 to themessage).

At this point, the current device is registered with the iSNS server andis assigned a domain ID. Thus, the current device may be visible toother devices registered with the iSNS server. However, the domain ID isin an iSNS format and is not a valid Fibre Channel identification.Therefore, the domain ID cannot be directly used to simulate a FibreChannel network for the HBA module. Therefore, once it receives the<RqstDomIdRsp> message including the domain ID, the Service Mapper 601creates a Fibre Channel specific ID based on the domain ID (step 614).The Fibre Channel specific ID is referred to as a N_Port_ID. This, IDwill be used to identify the HBA module.

The Service Mapper then issues another <DevAttrReg> command (command615) in order to register the Fibre Channel specific ID with the iSNSserver. This is done because there may be other devices in the Ethernetnetwork which also utilize the present invention. In other words theremay be other devices which also include an internal HBA module andsimulate a Fibre Channel network for that module. These other devicescannot use the Ethernet specific domain ID to represent the currentdevice to their HBA modules. Therefore, the Fibre Channel specificN_Port_ID is registered with the iSNS server so that other devices canaccess that ID and provide it when necessary to their internal HBAmodules. The <DevAttrReg> command 615 may be accompanied by attributes616.

Once it receives command 615, the iSNS server may register the N_Port_IDof the present device and return as an acknowledgement <DevAttrRegRsp>command 617. Once it receives command 617, the service mapper sends anFLOGI Reply message 618 to the HBA module. Message 618 includes theN_Port_ID. Thus, initialization is complete. The HBA module is under theimpression that it has logged into a Fibre Channel Fabric network andreceived N_Port_ID as identification. In reality, there is no FibreChannel network and the present device has been registered in the iSNSserver in an Ethernet network and is assigned a domain ID asidentification.

Thus, after the process of FIG. 6, the FCoEA is registered with the nameservice of the iSNS server. Thus, the FCoEA is assigned anidentification, can be discovered and accessed by other devices on thenetwork and can discover other devices. However, in order forinitialization to be complete, the FCoEA usually must also register fora messaging or state change notification service. State changenotification services allow various devices to receive alerts of changesof the states of one or more devices on a network. Thus, devices can bekept current without having to continuously request updates from theserver. Changes of state may include a disconnect of a device from anetwork, a connection of a new device or a disconnection and/orconnection of a resource in a device (e.g., a connection of a new harddrive in a storage device).

State change notifications are implemented through a registered statechange notification (RSCN) service in Fibre Channel and a state changenotification service (SCN) in the iSNS protocol. Thus, the FCoE of thepresent invention may utilize the SCN service in order to emulate theRSCN service of the Fibre Channel protocol.

FIG. 7 shows registration with a state change notification serviceaccording to embodiments of the present invention. Initially the HBAmodule attempts to register with the Fibre Channel RSCN service bysending a state change registration (SCR) command. The service mappertranslates that command into an iSNS specific state change notificationregistration command (i.e., <SCNReg> command 701). The iSNS client addsattributes 704 to the command. The <SCNReg> command is sent with theattributes to the iSNS server. The iSNS server responds with a<SCNRegRsp> command 702. That command is changed by the Service Mapperto a Fibre Channel specific SCR Reply command 703. The SCR reply commandis sent to the HBA module. Thus, registration for state changenotification services is complete.

The Fibre Channel protocol supports configurations in which a singleport (e.g., a single HBA) can be used to provide connectivity formultiple entities while each of these multiple entities is treated as adifferent device by the Fibre Channel fabric. Thus, for example, adevice which features an HBA may run multiple Operating Systeminstances, and the HBA may allow each operating system to communicateover the Fibre Channel network through the single HBA as if it were aseparate device. Thus, the multiple Operating Systems may featuremultiple respective N_Port_ID numbers. This feature is referred to asN_Port ID Virtualization or NPIV.

Embodiments of the present invention provide for emulating the NPIV(N_Port ID virtualization) feature over an Ethernet network. An exampleof this process is shown in FIG. 7. The HBA invokes the NPIV feature bysending an FDISC command 704. The FDISC command is similar to the FLOGIcommand 610 of FIG. 6, but it request registration of a new Fabric PortID. Thus, in the context of the previous example, a first OS may use theFLOGI command to obtain a first N_Port_ID, and later OSes may use theFDISC command to obtain their respective N_Port_IDs.

Once it receives the FDISC command, at step 705, the service mapperconstructs a second N_Port_ID based on the domain ID provided by theiSNS server during command 613 (also referred to as tag 130). The secondN_Port_ID should be different from the initial N_Port_ID constructed instep 614 of FIG. 6.

Once the additional N_Port_ID is constructed, it is registered with theiSNS server by <DevAttrReg> command 706 issued by the Service Mapper.Command 706 includes attributes 707, which indicate that a new port withthe new N_Port_ID is being registered. However, a new domain ID is notrequested from the iSNS server. Instead all ports are registered under asingle iSNS domain ID. The iSNS server returns a <DevAttrRegRsp> message708. Once that message is received by the service mapper, it sends anFDISC Reply message to the HBA module. The FDISC Reply message caninclude the second N_Port_ID that was constructed in step 705.

FIG. 8 is a diagram showing the process in which the FCoEA discoversother devices on the network. FIG. 8 also shows an additional FCoEelement—the FCoE data transfer element. The FCoE data transfer elementis part of the FCoE module and is used to send and receive data to andfrom other devices on the network. In other words, the data transferelement is not used to communicate with various servers (such as theiSNS and DHCP servers) but to directly communicate with other devices onthe network.

In Fibre Channel networks, logging in is required to communicate withthe name server. However, the iSNS server of an Ethernet network doesnot require a login. Therefore, at stage 801, the HBA module attempts tologin (by sending a PLOGI). The Service Mapper 601 acknowledges thelogin by sending a PLOGI Reply message without actually performing alogin (as such is not necessary for an iSNS server).

The HBA module may send out a GA_NXT Query 802 in order to discover allother devices on the network. In a Fibre Channel network, a GA_NXT Querycauses the name server to sequentially provide information about alldevices currently present in the network. The information is returned inan ascending order starting from the N_Port_ID which is next largestfrom the N_Port_ID included in the command. The GA_NXT Query commanddoes not have an equivalent in an iSNS server. Therefore, the ServiceMapper must perform several commands in order to execute it.

The Service Mapper first sends out a query 803, which requests from theiSNS server a list of all active N_Port_IDs. At step 804, the Servicemapper determines the next largest N_Port_ID. With command 805, theService Mapper requests from the iSNS server additional information forthe next N_Port_ID. The additional information may include all fieldsthat are usually provided with the response to a GA_NXT Query, as wellas the Ethernet address of the device whose N_Port_ID is being queried.This data is received with a response from the iSNS server 806.

At step 807, the combination of the N_Port_ID and Ethernet addresses ofthe queried device is stored by the FCoE data transfer element 800. Thisis necessary, because when HBA module attempts to communicate with thequeried device, it will address the communications to the N_Port_ID ofthe queried device. The N_Port_ID, however is a Fibre Channel specificaddress. This address will need to be converted to an Ethernet specificone in order for the communications to be sent over the Ethernetnetwork. Therefore, the FCoE data transfer module stores each N_Port_IDand its respective Ethernet address that are received from variousqueries to the iSNS server. The FCoE data transfer module may then usethis stored information to translate the destination N_Port_IDcommunications sent by the HBA module to a respective Ethernet address.

At step 808, the service mapper translates the information received fromthe iSNS server into a format associated with a Fibre Channel GA_NXTAccept message. The Service Mapper then sends that data to the HBAmodule in a GA_NXT Accept message. At step 810, the HBA module repeatsstep 802 causing the service mapper to repeat steps 803-809. The HBAmodule repeats step 802 until all N_Port_IDs are discovered. Thus, allN_Port_IDs can be scanned and information about them sent to the HBAmodule. It should be noted that the HBA module does not receive theEthernet addresses of the Port IDs, since it is not aware of theexistence of the Ethernet network. These addresses are instead receivedand used by the FCoE data transfer module 800, as discussed above. Atstep 811, the HBA module logs out, said log out being processed locallyby the service mapper.

FIG. 9 shows the operation of the FCoE module during a GID_FF Query. AGID_FF Query is a query that requests the N_Port_IDs of all devices thathave particular features. For example, that query can be used to obtainall targets. This process is similar to the one discussed above withrespect to the GA_NXT Query.

At step 901, the HBA module performs a login that is handled locally bythe Service Mapper. The HBA module then issues a GID_FF Query (step902). The service mapper sends a query to the iSNS server requestinginformation on all devices registered with the ISNS server (step 903).The service mapper then filters the received entries based on theparameters of the GID_FF Query (step 904). The FCoE data transferelement stores Port ID and Ethernet address mappings of the filteredports (step 905). The service mapper reformats the data associated withthe filtered ports in a Fibre Channel format (step 906) and sends thatdata to the HBA module (step 907). Having received a response to itscommand, the HBA module logs out and the logout is processed locally bythe service mapper (step 908).

FIG. 10 is a diagram showing the behavior of the FCoE module duringreceipt of a state change notification message. As noted above statechange notification messages may be used by a server (such as a FibreChannel name server or an iSNS server) to inform the device of changesin the network, such as a drop out of one of the devices from thenetwork, an addition of a new device, etc.

The iSNS server sends out a state change notification (<SCN>) message1001. Message 1001 may, for example, inform that a certain device hasdropped out of the network. Naturally, the <SCN> message is in an iSNSformat and therefore does not include the Fibre Channel N_Port_ID of thedropped out device. Instead it only includes an iSNS specific address(i.e., the World Wide Port Name, tag 64). Therefore, at step 1002, theservice mapper requests and receives the N_Port_ID of the affecteddevice from the iSNS server. In step 1003, the service mapper forms anRSCN message (i.e., a Fibre Channel formatted state change notificationmessage) utilizing data received from the <SCN> message 1001 and theN_Port_ID received in step 1002. The service mapper then sends the thusformed RSCN message 1004 to the HBA module. The HBA module then providesan RSCN reply. The service module reformats that reply to an iSNSformatted response message (<SCNRsp> message 1006). The <SCNRsp> messageis then sent back to the iSNS server.

As noted above data transfer may be performed by the FCoE data transferelement 800. The data transfer element may store pairs of Ethernetaddresses and N_Port_IDs of other devices in the network in a table,whenever this data is obtained from the iSNS server. See, for example,steps 807 of FIGS. 8 and 905 of FIG. 9. When the data transfer elementreceives a Fibre Channel packet destined to a particular Fibre ChannelN_Port_ID, it can consult the afore-mentioned table in order to obtainan Ethernet address associated with that N_Port_ID. The data transfermodule may then place the Fibre Channel packet into one or more Ethernetframes and address the Ethernet frames to the Ethernet address obtainedfrom the table.

In theory, all N_Port_IDs to which the HBA module addressescommunications should be stored in the table (along with theirrespective Ethernet addresses). This should be the case, because inorder for the HBA module to be aware of an N_Port_ID, it must obtain itthrough the FCoE module from the iSNS server. See for example, theprocesses discussed in FIGS. 8 and 9. When the HBA module obtains anN_Port_ID in this manner, the FCoE data transfer element should storethe N_Port_ID and its respective Ethernet address in its table (see,e.g., steps 807 of FIGS. 8 and 905 of FIG. 9).

However, there exists a possibility that an HBA module may attempt toaccess an N_Port_ID that is not in the FCoE data transfer element'stable. This may be the case if the HBA module becomes aware of theN_Port_ID in another manner, or simply decides to “blindly” send amessage to a specific N_Port_ID. Embodiments of the present inventionmay account for this possibility by providing the method shown in FIG.11.

Initially, the HBA module may attempt to log in to another device bysending a log in command (PLOGI command 1101). The PLOGI command 1101 isaddressed to another device and not to the name server of the virtualFibre Channel network. At step 1102, the FCoE data transfer elementdetermines whether a Fibre Channel destination address (i.e., anN_Port_ID) of the PLOGI command is in its table. As noted, the processof FIG. 11 is executed when the N_Port_ID is not in the FCoE datatransfer element's table.

Upon determination that the N_Port_ID address is not in its table, thedata transfer element sends a query (<DevAttrQry> 1103) to the iSNSserver requesting data on all devices registered with the iSNS server.The iSNS server provides the data for all devices in its response 1104.At step 1105, the FCoE data transfer element searches through thereceived data to locate a record of a device with an N_Port_ID identicalto the one provided in the PLOGI command 1101. Once it discovers thatdevice it saves the N_Port_ID number and its associated Ethernet addressin its table.

It then sends the PLOGI command 1101 to the Ethernet address obtained instep 1105. The remote recipient of command 1101 may send reply 1105.Once received, the reply is reformatted and forwarded to the HBA module.Thus, the current HBA module is logged into a remote HBA module and mayproceed communicating with it. Since the FCoE data transfer module nowhas the Ethernet address of the remote HBA module, it can easily processand route these communications.

While the examples above have been provided in the context of a singleEthernet network, embodiments of the present invention may be used toconnect devices that are part of multiple networks. A person of skill inthe art would recognize that the above described embodiments of thepresent invention can be used with multiple connected Ethernet networks.Furthermore, embodiments of the present invention can be used withheterogeneous network environments in which multiple networks ofdifferent types are connected.

FIG. 12A shows an example of one such environment. More specifically,FIG. 12A shows an FCoE enabled device 1200 that includes an FCoEA thatis connected to Ethernet network 1202. The Ethernet network is connectedto a Fibre Channel Gateway 1203. The Fibre Channel gateway is a gatewayused to interconnect an Ethernet and a Fibre Channel network. The FibreChannel gateway is connected to a Fibre Channel network 1204 which is inturn connected to another end device 1210 which utilizes a standardFibre Channel HBA 1211.

The Fibre Channel gateway may connect the two networks using techniquessimilar to those discussed above. Thus, the Fibre Channel gateway mayencapsulate and de-encapsulate communications passing between the twonetworks.

Furthermore, the Fibre Channel gateway may forward addressing and nameserver communications between the two networks in order to allow FCoEA1201 and HBA 1211 to discover each other's addresses and otherinformation. The Fibre Channel gateway may achieve this, for example, bylogging into the fabric and name server of network 1204 in order todiscover information about device 1210 and into the iSNS server ofEthernet network 1202 in order to discover information about device1200. The Fibre Channel gateway can then provide the information ofdevice 1210 to the iSNS server of network 1202 and the information ofdevice 1200 to the fabric and name server of network 1204. However, inboth cases the gateway may provide its own address instead of that ofthe other device. Thus, when the two devices communicate with eachother, they can send communications to the gateway which can forwardthem to the other device in the other network. The gateway can alsooperate in cases where there are multiple devices in one or bothnetworks (in that case it may need to use multiple addresses).

FIG. 12B illustrates another example of multiple heterogeneous networks.In this case, device 1200 may use FCoEA 1201 to connect to Ethernetnetwork 1202, which connects to a Fibre Channel gateway 1203 and anEthernet network 1204. Ethernet network 1204 may in turn connect to asecond Fibre Channel gateway 1205 which may connect to a second Ethernetnetwork 1206. A second device 1214 including an FCoEA 1215 may beconnected to the second Ethernet network. Thus, two devices can beconnected through two Ethernet networks that include a Fibre Channelnetwork between them. While only two devices are shown, multiple devicesmay be connected to each network.

It is noted that the present invention is not limited to the specificexemplary embodiments discussed above. For example, the FCoE module isnot limited to the elements discussed in FIGS. 6-11, or to the methodsdiscussed in these figures.

Although the present invention has been fully described in connectionwith embodiments thereof with reference to the accompanying drawings, itis to be noted that various changes and modifications will becomeapparent to those skilled in the art. Such changes and modifications areto be understood as being included within the scope of the presentinvention as defined by the appended claims.

1. The method of claim 47, comprising: generating Fibre Channelcommunications by a Host Bus Adapter (HBA) module of the networkeddevice, the communications including at least some communicationsdirected to a Fibre Channel fabric service; translating the FibreChannel communications to Ethernet communications by Fibre Channel overEthernet (FCoE) module of the networked device, the translatingincluding translating the communications directed to a Fibre Channelservice to communications directed to an Ethernet service; and sendingthe Ethernet communications over an Ethernet network by the FCoE module.2. The method of claim 1, comprising: receiving Ethernet communicationsby the FCoE module from the Ethernet network, the receivedcommunications including at least some communications received from anEthernet service; translating the Ethernet communications into incomingFibre Channel communications by the FCoE module, the translatingincluding translating the communications received from the Ethernetservice to communications associated with a Fibre Channel fabricservice; and sending the incoming Fibre Channel communications to theHBA module.
 3. The method of claim 2, wherein at least one of the FibreChannel communications that are directed to a Fibre Channel fabricservice is addressed to a name server or another Fabric service in aFibre Channel network, and the translating of the Fibre Channelcommunications include translating the at least one of the Fibre Channelcommunications into communications formatted for and addressed to anInternet Storage Name Service (iSNS) server within the Ethernet network.4-7. (canceled)
 8. The method of claim 3, comprising: saving the virtualFibre Channel address and the Ethernet address in a table; and sendingthe virtual Fibre Channel address to the HBA modules. 9-11. (canceled)12. A method for operating a networking device, comprising: connectingan FCoE (Fibre Channel over Ethernet) module of the networking device toan Ethernet network; and virtualizing a Fibre Channel network for an HBA(Host Bus Adapter) module, the virtual Fibre Channel network being basedon the Ethernet network, the virtualizing of a Fibre Channel networkincluding producing a plurality of Fibre Channel fabric addresses usinga seed value received from an Internet Storage Name Service (iSNS)server, mapping the plurality of Fibre Channel fabric addresses toEthernet addresses, and tunneling Fibre Channel frames over Ethernetframes.
 13. The method of claim 12, wherein the method comprisesvirtualizing a Fibre Channel name server for the HBA module by utilizingthe iSNS server. 14-26. (canceled)
 27. The networking device of claim48, wherein the networking device comprises a Host Bus Adapter (HBA)module configured to communicate with a Fibre Channel network, the FCoEmodule being connected to the HBA module and to an Ethernet network andconfigured to provide a virtual Fibre Channel network to the HBA module,the virtual Fibre Channel network being based on the Ethernet networkwhich includes one or more Ethernet servers, the providing a virtualFibre Channel network to the HBA module including using the one or moreEthernet Servers to provide virtual Fibre Channel fabric services to theHBA module.
 28. The networking device of claim 27, wherein the HBAmodule is further configured to communicate with a name server oranother Fabric service within a Fibre Channel network.
 29. Thenetworking device of claim 28, wherein the FCoE module is furtherconfigured to access a DHCP server to determine the address of the iSNSserver.
 30. The networking device of claim 28, wherein the FCoE modulecomprises a service mapper for translating Fibre Channel name server andother Fabric service based communications into iSNS based communicationsand iSNS based communications into Fibre Channel name server and otherFabric service based communications.
 31. The networking device of claim48, wherein the FCoE module is configured to construct a Fibre Channeladdress for the networking device and register the Fibre Channel addresswith the iSNS server.
 32. The networking device of claim 28, wherein theFCoE module comprises an iSNS client for communicating with the iSNSserver.
 33. (canceled)
 34. The networking device of claim 28, whereinthe FCoE module further comprises an FCoE data transfer element, whichis utilized to process communications between the HBA module and devicesin the Ethernet network other than the iSNS server.
 35. The networkingdevice of claim 34, wherein the FCoE data transfer element includes atable of pairs of addresses, each pair of addresses including anEthernet address of a device connected to the Ethernet network and aFibre Channel address (N_Port_ID) associated with the device. 36.(canceled)
 38. A computer including the networking device of claim 48.39. A networked storage device including the networking device of claim48. 40-46. (canceled)
 47. A method for operating a networking device,comprising: producing a virtual Fibre Channel address using a seed valuereceived from an Internet Storage Name Service (iSNS) server; mapping aEthernet address to the virtual Fibre Channel address; and communicatinga Fibre Channel packet encapsulated in an Ethernet frame, the Ethernetframe comprising the Ethernet address.
 48. A networking devicecomprising: an Ethernet interface operable to communicate a FibreChannel packet encapsulated in an Ethernet frame, the Ethernet framecomprising an Ethernet address of a destination device; and a FCoE(Fibre Channel over Ethernet) module operable to map the Ethernetaddress to a virtual Fibre Channel address, the virtual Fibre Channeladdress being produced using a seed value received by the communicationprocessor from an Internet Storage Name Service (iSNS) server.